{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 1000x400 with 0 Axes>"
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 1000x400 with 0 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "%config InlineBackend.figure_format = 'svg'\n",
    "plt.rc('font', family='Times New Roman', weight='normal', size=12)\n",
    "plt.figure(figsize=(10, 4))"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "from VCMTSP import Instance\n",
    "\n",
    "\n",
    "case, m = 'eil101', 10\n",
    "data = Instance(file=f'../../data/TSPLIB_VC/{case}.tsp/{case}.tsp.txt', m=m)"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "cases = [['att48', 2, 4, 6, 8],\n",
    "         ['eil51'], 2, 4, 6, 8,\n",
    "         ['kroA100', 2, 4, 6, 8],\n",
    "         ['eil101', 2, 4, 6, 8],\n",
    "         ['kroA150', 10, 20, 30, 40],\n",
    "         ['kroA200', 10, 20, 30, 40],\n",
    "         ['gr202', 10, 20, 30, 40],\n",
    "         ['gr229', 10, 20, 30, 40],\n",
    "         ['gr431', 40, 60, 80, 100],\n",
    "         ['gr666', 40, 60, 80, 100],]"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "from ACO import ACO\n",
    "from VNS import VNS\n",
    "from PGA import PGA\n",
    "from IWO import IWO\n",
    "from ABC import ABC"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [],
   "source": [
    "def visualize(results: list):\n",
    "    if type(results) is not list:\n",
    "        results = [results]\n",
    "    plt.clf()\n",
    "    for result in results:\n",
    "        plt.plot(range(len(result.evo_list)), result.evo_list, label=f'{result.name}: {result.evo_list[-1]:.2f}')\n",
    "    plt.legend()\n",
    "    plt.title(f'{results[0].data.name}: ')\n",
    "    plt.show()"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "VNS on eil101_m10 trial 1: 100%|██████████| 200/200 [00:02<00:00, 81.79it/s, best: 1194.75]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"402.52pt\" height=\"314.410375pt\" viewBox=\"0 0 402.52 314.410375\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2023-03-11T23:06:23.872618</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.6.2, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 314.410375 \nL 402.52 314.410375 \nL 402.52 0 \nL 0 0 \nz\n\" style=\"fill: #ffffff\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 38.2 289.311 \nL 395.32 289.311 \nL 395.32 23.199 \nL 38.2 23.199 \nz\n\" style=\"fill: #ffffff\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path id=\"m356bd85fbd\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"54.432727\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(51.432727 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-30\" d=\"M 231 2094 \nQ 231 2819 450 3342 \nQ 669 3866 1031 4122 \nQ 1313 4325 1613 4325 \nQ 2100 4325 2488 3828 \nQ 2972 3213 2972 2159 \nQ 2972 1422 2759 906 \nQ 2547 391 2217 158 \nQ 1888 -75 1581 -75 \nQ 975 -75 572 641 \nQ 231 1244 231 2094 \nz\nM 844 2016 \nQ 844 1141 1059 588 \nQ 1238 122 1591 122 \nQ 1759 122 1940 273 \nQ 2122 425 2216 781 \nQ 2359 1319 2359 2297 \nQ 2359 3022 2209 3506 \nQ 2097 3866 1919 4016 \nQ 1791 4119 1609 4119 \nQ 1397 4119 1231 3928 \nQ 1006 3669 925 3112 \nQ 844 2556 844 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"95.218474\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 25 -->\n      <g transform=\"translate(89.218474 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-32\" d=\"M 2934 816 \nL 2638 0 \nL 138 0 \nL 138 116 \nQ 1241 1122 1691 1759 \nQ 2141 2397 2141 2925 \nQ 2141 3328 1894 3587 \nQ 1647 3847 1303 3847 \nQ 991 3847 742 3664 \nQ 494 3481 375 3128 \nL 259 3128 \nQ 338 3706 661 4015 \nQ 984 4325 1469 4325 \nQ 1984 4325 2329 3994 \nQ 2675 3663 2675 3213 \nQ 2675 2891 2525 2569 \nQ 2294 2063 1775 1497 \nQ 997 647 803 472 \nL 1909 472 \nQ 2247 472 2383 497 \nQ 2519 522 2628 598 \nQ 2738 675 2819 816 \nL 2934 816 \nz\n\" transform=\"scale(0.015625)\"/>\n        <path id=\"TimesNewRomanPSMT-35\" d=\"M 2778 4238 \nL 2534 3706 \nL 1259 3706 \nL 981 3138 \nQ 1809 3016 2294 2522 \nQ 2709 2097 2709 1522 \nQ 2709 1188 2573 903 \nQ 2438 619 2231 419 \nQ 2025 219 1772 97 \nQ 1413 -75 1034 -75 \nQ 653 -75 479 54 \nQ 306 184 306 341 \nQ 306 428 378 495 \nQ 450 563 559 563 \nQ 641 563 702 538 \nQ 763 513 909 409 \nQ 1144 247 1384 247 \nQ 1750 247 2026 523 \nQ 2303 800 2303 1197 \nQ 2303 1581 2056 1914 \nQ 1809 2247 1375 2428 \nQ 1034 2569 447 2591 \nL 1259 4238 \nL 2778 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"136.004221\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 50 -->\n      <g transform=\"translate(130.004221 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-35\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"176.789968\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 75 -->\n      <g transform=\"translate(170.789968 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-37\" d=\"M 644 4238 \nL 2916 4238 \nL 2916 4119 \nL 1503 -88 \nL 1153 -88 \nL 2419 3728 \nL 1253 3728 \nQ 900 3728 750 3644 \nQ 488 3500 328 3200 \nL 238 3234 \nL 644 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"217.575715\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 100 -->\n      <g transform=\"translate(208.575715 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-31\" d=\"M 750 3822 \nL 1781 4325 \nL 1884 4325 \nL 1884 747 \nQ 1884 391 1914 303 \nQ 1944 216 2037 169 \nQ 2131 122 2419 116 \nL 2419 0 \nL 825 0 \nL 825 116 \nQ 1125 122 1212 167 \nQ 1300 213 1334 289 \nQ 1369 366 1369 747 \nL 1369 3034 \nQ 1369 3497 1338 3628 \nQ 1316 3728 1258 3775 \nQ 1200 3822 1119 3822 \nQ 1003 3822 797 3725 \nL 750 3822 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"258.361462\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 125 -->\n      <g transform=\"translate(249.361462 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_7\">\n     <g id=\"line2d_7\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"299.147209\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 150 -->\n      <g transform=\"translate(290.147209 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_8\">\n     <g id=\"line2d_8\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"339.932956\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 175 -->\n      <g transform=\"translate(330.932956 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_9\">\n     <g id=\"line2d_9\">\n      <g>\n       <use xlink:href=\"#m356bd85fbd\" x=\"380.718703\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 200 -->\n      <g transform=\"translate(371.718703 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-32\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_10\">\n      <defs>\n       <path id=\"mecc87648b2\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#mecc87648b2\" x=\"38.2\" y=\"266.591663\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 1200 -->\n      <g transform=\"translate(7.2 270.757913) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_11\">\n      <g>\n       <use xlink:href=\"#mecc87648b2\" x=\"38.2\" y=\"226.087527\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 1220 -->\n      <g transform=\"translate(7.2 230.253777) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_12\">\n      <g>\n       <use xlink:href=\"#mecc87648b2\" x=\"38.2\" y=\"185.58339\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1240 -->\n      <g transform=\"translate(7.2 189.74964) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-34\" d=\"M 2978 1563 \nL 2978 1119 \nL 2409 1119 \nL 2409 0 \nL 1894 0 \nL 1894 1119 \nL 100 1119 \nL 100 1519 \nL 2066 4325 \nL 2409 4325 \nL 2409 1563 \nL 2978 1563 \nz\nM 1894 1563 \nL 1894 3666 \nL 406 1563 \nL 1894 1563 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_13\">\n      <g>\n       <use xlink:href=\"#mecc87648b2\" x=\"38.2\" y=\"145.079254\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 1260 -->\n      <g transform=\"translate(7.2 149.245504) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-36\" d=\"M 2869 4325 \nL 2869 4209 \nQ 2456 4169 2195 4045 \nQ 1934 3922 1679 3669 \nQ 1425 3416 1258 3105 \nQ 1091 2794 978 2366 \nQ 1428 2675 1881 2675 \nQ 2316 2675 2634 2325 \nQ 2953 1975 2953 1425 \nQ 2953 894 2631 456 \nQ 2244 -75 1606 -75 \nQ 1172 -75 869 213 \nQ 275 772 275 1663 \nQ 275 2231 503 2743 \nQ 731 3256 1154 3653 \nQ 1578 4050 1965 4187 \nQ 2353 4325 2688 4325 \nL 2869 4325 \nz\nM 925 2138 \nQ 869 1716 869 1456 \nQ 869 1156 980 804 \nQ 1091 453 1309 247 \nQ 1469 100 1697 100 \nQ 1969 100 2183 356 \nQ 2397 613 2397 1088 \nQ 2397 1622 2184 2012 \nQ 1972 2403 1581 2403 \nQ 1463 2403 1327 2353 \nQ 1191 2303 925 2138 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-36\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_14\">\n      <g>\n       <use xlink:href=\"#mecc87648b2\" x=\"38.2\" y=\"104.575117\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 1280 -->\n      <g transform=\"translate(7.2 108.741367) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-38\" d=\"M 1228 2134 \nQ 725 2547 579 2797 \nQ 434 3047 434 3316 \nQ 434 3728 753 4026 \nQ 1072 4325 1600 4325 \nQ 2113 4325 2425 4047 \nQ 2738 3769 2738 3413 \nQ 2738 3175 2569 2928 \nQ 2400 2681 1866 2347 \nQ 2416 1922 2594 1678 \nQ 2831 1359 2831 1006 \nQ 2831 559 2490 242 \nQ 2150 -75 1597 -75 \nQ 994 -75 656 303 \nQ 388 606 388 966 \nQ 388 1247 577 1523 \nQ 766 1800 1228 2134 \nz\nM 1719 2469 \nQ 2094 2806 2194 3001 \nQ 2294 3197 2294 3444 \nQ 2294 3772 2109 3958 \nQ 1925 4144 1606 4144 \nQ 1288 4144 1088 3959 \nQ 888 3775 888 3528 \nQ 888 3366 970 3203 \nQ 1053 3041 1206 2894 \nL 1719 2469 \nz\nM 1375 2016 \nQ 1116 1797 991 1539 \nQ 866 1281 866 981 \nQ 866 578 1086 336 \nQ 1306 94 1647 94 \nQ 1984 94 2187 284 \nQ 2391 475 2391 747 \nQ 2391 972 2272 1150 \nQ 2050 1481 1375 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-38\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_15\">\n      <g>\n       <use xlink:href=\"#mecc87648b2\" x=\"38.2\" y=\"64.070981\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_15\">\n      <!-- 1300 -->\n      <g transform=\"translate(7.2 68.237231) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-33\" d=\"M 325 3431 \nQ 506 3859 782 4092 \nQ 1059 4325 1472 4325 \nQ 1981 4325 2253 3994 \nQ 2459 3747 2459 3466 \nQ 2459 3003 1878 2509 \nQ 2269 2356 2469 2072 \nQ 2669 1788 2669 1403 \nQ 2669 853 2319 450 \nQ 1863 -75 997 -75 \nQ 569 -75 414 31 \nQ 259 138 259 259 \nQ 259 350 332 419 \nQ 406 488 509 488 \nQ 588 488 669 463 \nQ 722 447 909 348 \nQ 1097 250 1169 231 \nQ 1284 197 1416 197 \nQ 1734 197 1970 444 \nQ 2206 691 2206 1028 \nQ 2206 1275 2097 1509 \nQ 2016 1684 1919 1775 \nQ 1784 1900 1550 2001 \nQ 1316 2103 1072 2103 \nL 972 2103 \nL 972 2197 \nQ 1219 2228 1467 2375 \nQ 1716 2522 1828 2728 \nQ 1941 2934 1941 3181 \nQ 1941 3503 1739 3701 \nQ 1538 3900 1238 3900 \nQ 753 3900 428 3381 \nL 325 3431 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_16\">\n      <g>\n       <use xlink:href=\"#mecc87648b2\" x=\"38.2\" y=\"23.566844\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_16\">\n      <!-- 1320 -->\n      <g transform=\"translate(7.2 27.733094) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_17\">\n    <path d=\"M 54.432727 35.295 \nL 56.064157 42.238976 \nL 59.327017 42.238976 \nL 60.958447 107.58231 \nL 64.221307 107.687722 \nL 65.852736 111.40792 \nL 67.484166 121.470923 \nL 69.115596 139.434354 \nL 70.747026 149.827931 \nL 74.009886 149.827931 \nL 75.641316 175.398833 \nL 77.272746 191.413333 \nL 78.904175 196.018523 \nL 82.167035 196.018523 \nL 83.798465 198.369496 \nL 85.429895 206.250549 \nL 87.061325 206.250549 \nL 88.692755 206.77038 \nL 90.324185 206.77038 \nL 91.955614 207.362605 \nL 122.952782 207.362605 \nL 124.584212 209.651164 \nL 126.215642 227.399879 \nL 127.847072 258.034319 \nL 134.372791 258.034319 \nL 136.004221 258.786676 \nL 153.94995 258.786676 \nL 155.58138 259.495642 \nL 168.632819 259.495642 \nL 170.264249 260.812022 \nL 181.684258 260.812022 \nL 183.315688 265.275351 \nL 194.735697 265.275351 \nL 196.367127 265.59453 \nL 211.049995 265.59453 \nL 212.681425 275.031035 \nL 217.575715 275.031035 \nL 219.207145 275.642734 \nL 242.047163 275.674971 \nL 243.678593 277.215 \nL 379.087273 277.215 \nL 379.087273 277.215 \n\" clip-path=\"url(#pca4282fe7f)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 38.2 289.311 \nL 38.2 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 395.32 289.311 \nL 395.32 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 38.2 289.311 \nL 395.32 289.311 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 38.2 23.199 \nL 395.32 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"text_17\">\n    <!-- eil101_m10:  -->\n    <g transform=\"translate(178.562875 17.199) scale(0.144 -0.144)\">\n     <defs>\n      <path id=\"TimesNewRomanPSMT-65\" d=\"M 681 1784 \nQ 678 1147 991 784 \nQ 1303 422 1725 422 \nQ 2006 422 2214 576 \nQ 2422 731 2563 1106 \nL 2659 1044 \nQ 2594 616 2278 264 \nQ 1963 -88 1488 -88 \nQ 972 -88 605 314 \nQ 238 716 238 1394 \nQ 238 2128 614 2539 \nQ 991 2950 1559 2950 \nQ 2041 2950 2350 2633 \nQ 2659 2316 2659 1784 \nL 681 1784 \nz\nM 681 1966 \nL 2006 1966 \nQ 1991 2241 1941 2353 \nQ 1863 2528 1708 2628 \nQ 1553 2728 1384 2728 \nQ 1125 2728 920 2526 \nQ 716 2325 681 1966 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-69\" d=\"M 928 4444 \nQ 1059 4444 1151 4351 \nQ 1244 4259 1244 4128 \nQ 1244 3997 1151 3903 \nQ 1059 3809 928 3809 \nQ 797 3809 703 3903 \nQ 609 3997 609 4128 \nQ 609 4259 701 4351 \nQ 794 4444 928 4444 \nz\nM 1188 2947 \nL 1188 647 \nQ 1188 378 1227 289 \nQ 1266 200 1342 156 \nQ 1419 113 1622 113 \nL 1622 0 \nL 231 0 \nL 231 113 \nQ 441 113 512 153 \nQ 584 194 626 287 \nQ 669 381 669 647 \nL 669 1750 \nQ 669 2216 641 2353 \nQ 619 2453 572 2492 \nQ 525 2531 444 2531 \nQ 356 2531 231 2484 \nL 188 2597 \nL 1050 2947 \nL 1188 2947 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-6c\" d=\"M 1184 4444 \nL 1184 647 \nQ 1184 378 1223 290 \nQ 1263 203 1344 158 \nQ 1425 113 1647 113 \nL 1647 0 \nL 244 0 \nL 244 113 \nQ 441 113 512 153 \nQ 584 194 625 287 \nQ 666 381 666 647 \nL 666 3247 \nQ 666 3731 644 3842 \nQ 622 3953 573 3993 \nQ 525 4034 450 4034 \nQ 369 4034 244 3984 \nL 191 4094 \nL 1044 4444 \nL 1184 4444 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-5f\" d=\"M 3256 -1381 \nL -53 -1381 \nL -53 -1119 \nL 3256 -1119 \nL 3256 -1381 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-6d\" d=\"M 1050 2338 \nQ 1363 2650 1419 2697 \nQ 1559 2816 1721 2881 \nQ 1884 2947 2044 2947 \nQ 2313 2947 2506 2790 \nQ 2700 2634 2766 2338 \nQ 3088 2713 3309 2830 \nQ 3531 2947 3766 2947 \nQ 3994 2947 4170 2830 \nQ 4347 2713 4450 2447 \nQ 4519 2266 4519 1878 \nL 4519 647 \nQ 4519 378 4559 278 \nQ 4591 209 4675 161 \nQ 4759 113 4950 113 \nL 4950 0 \nL 3538 0 \nL 3538 113 \nL 3597 113 \nQ 3781 113 3884 184 \nQ 3956 234 3988 344 \nQ 4000 397 4000 647 \nL 4000 1878 \nQ 4000 2228 3916 2372 \nQ 3794 2572 3525 2572 \nQ 3359 2572 3192 2489 \nQ 3025 2406 2788 2181 \nL 2781 2147 \nL 2788 2013 \nL 2788 647 \nQ 2788 353 2820 281 \nQ 2853 209 2943 161 \nQ 3034 113 3253 113 \nL 3253 0 \nL 1806 0 \nL 1806 113 \nQ 2044 113 2133 169 \nQ 2222 225 2256 338 \nQ 2272 391 2272 647 \nL 2272 1878 \nQ 2272 2228 2169 2381 \nQ 2031 2581 1784 2581 \nQ 1616 2581 1450 2491 \nQ 1191 2353 1050 2181 \nL 1050 647 \nQ 1050 366 1089 281 \nQ 1128 197 1204 155 \nQ 1281 113 1516 113 \nL 1516 0 \nL 100 0 \nL 100 113 \nQ 297 113 375 155 \nQ 453 197 493 289 \nQ 534 381 534 647 \nL 534 1741 \nQ 534 2213 506 2350 \nQ 484 2453 437 2492 \nQ 391 2531 309 2531 \nQ 222 2531 100 2484 \nL 53 2597 \nL 916 2947 \nL 1050 2947 \nL 1050 2338 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-3a\" d=\"M 903 2950 \nQ 1047 2950 1148 2848 \nQ 1250 2747 1250 2603 \nQ 1250 2459 1148 2357 \nQ 1047 2256 903 2256 \nQ 759 2256 657 2357 \nQ 556 2459 556 2603 \nQ 556 2747 657 2848 \nQ 759 2950 903 2950 \nz\nM 897 609 \nQ 1044 609 1145 506 \nQ 1247 403 1247 259 \nQ 1247 116 1144 14 \nQ 1041 -88 897 -88 \nQ 753 -88 651 14 \nQ 550 116 550 259 \nQ 550 403 651 506 \nQ 753 609 897 609 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-20\" transform=\"scale(0.015625)\"/>\n     </defs>\n     <use xlink:href=\"#TimesNewRomanPSMT-65\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-69\" x=\"44.384766\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-6c\" x=\"72.167969\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"99.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"149.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"199.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-5f\" x=\"249.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-6d\" x=\"299.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"377.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"427.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-3a\" x=\"477.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-20\" x=\"505.517578\"/>\n    </g>\n   </g>\n   <g id=\"legend_1\">\n    <g id=\"patch_7\">\n     <path d=\"M 279.630625 49.765875 \nL 386.92 49.765875 \nQ 389.32 49.765875 389.32 47.365875 \nL 389.32 31.599 \nQ 389.32 29.199 386.92 29.199 \nL 279.630625 29.199 \nQ 277.230625 29.199 277.230625 31.599 \nL 277.230625 47.365875 \nQ 277.230625 49.765875 279.630625 49.765875 \nz\n\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n    </g>\n    <g id=\"line2d_18\">\n     <path d=\"M 282.030625 38.199 \nL 294.030625 38.199 \nL 306.030625 38.199 \n\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n    </g>\n    <g id=\"text_18\">\n     <!-- VNS: 1194.75 -->\n     <g transform=\"translate(315.630625 42.399) scale(0.12 -0.12)\">\n      <defs>\n       <path id=\"TimesNewRomanPSMT-56\" d=\"M 4544 4238 \nL 4544 4122 \nQ 4319 4081 4203 3978 \nQ 4038 3825 3909 3509 \nL 2431 -97 \nL 2316 -97 \nL 728 3556 \nQ 606 3838 556 3900 \nQ 478 3997 364 4051 \nQ 250 4106 56 4122 \nL 56 4238 \nL 1788 4238 \nL 1788 4122 \nQ 1494 4094 1406 4022 \nQ 1319 3950 1319 3838 \nQ 1319 3681 1463 3350 \nL 2541 866 \nL 3541 3319 \nQ 3688 3681 3688 3822 \nQ 3688 3913 3597 3995 \nQ 3506 4078 3291 4113 \nQ 3275 4116 3238 4122 \nL 3238 4238 \nL 4544 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-4e\" d=\"M -84 4238 \nL 1066 4238 \nL 3656 1059 \nL 3656 3503 \nQ 3656 3894 3569 3991 \nQ 3453 4122 3203 4122 \nL 3056 4122 \nL 3056 4238 \nL 4531 4238 \nL 4531 4122 \nL 4381 4122 \nQ 4113 4122 4000 3959 \nQ 3931 3859 3931 3503 \nL 3931 -69 \nL 3819 -69 \nL 1025 3344 \nL 1025 734 \nQ 1025 344 1109 247 \nQ 1228 116 1475 116 \nL 1625 116 \nL 1625 0 \nL 150 0 \nL 150 116 \nL 297 116 \nQ 569 116 681 278 \nQ 750 378 750 734 \nL 750 3681 \nQ 566 3897 470 3965 \nQ 375 4034 191 4094 \nQ 100 4122 -84 4122 \nL -84 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-53\" d=\"M 2934 4334 \nL 2934 2869 \nL 2819 2869 \nQ 2763 3291 2617 3541 \nQ 2472 3791 2203 3937 \nQ 1934 4084 1647 4084 \nQ 1322 4084 1109 3886 \nQ 897 3688 897 3434 \nQ 897 3241 1031 3081 \nQ 1225 2847 1953 2456 \nQ 2547 2138 2764 1967 \nQ 2981 1797 3098 1565 \nQ 3216 1334 3216 1081 \nQ 3216 600 2842 251 \nQ 2469 -97 1881 -97 \nQ 1697 -97 1534 -69 \nQ 1438 -53 1133 45 \nQ 828 144 747 144 \nQ 669 144 623 97 \nQ 578 50 556 -97 \nL 441 -97 \nL 441 1356 \nL 556 1356 \nQ 638 900 775 673 \nQ 913 447 1195 297 \nQ 1478 147 1816 147 \nQ 2206 147 2432 353 \nQ 2659 559 2659 841 \nQ 2659 997 2573 1156 \nQ 2488 1316 2306 1453 \nQ 2184 1547 1640 1851 \nQ 1097 2156 867 2337 \nQ 638 2519 519 2737 \nQ 400 2956 400 3219 \nQ 400 3675 750 4004 \nQ 1100 4334 1641 4334 \nQ 1978 4334 2356 4169 \nQ 2531 4091 2603 4091 \nQ 2684 4091 2736 4139 \nQ 2788 4188 2819 4334 \nL 2934 4334 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-39\" d=\"M 338 -88 \nL 338 28 \nQ 744 34 1094 217 \nQ 1444 400 1770 856 \nQ 2097 1313 2225 1859 \nQ 1734 1544 1338 1544 \nQ 891 1544 572 1889 \nQ 253 2234 253 2806 \nQ 253 3363 572 3797 \nQ 956 4325 1575 4325 \nQ 2097 4325 2469 3894 \nQ 2925 3359 2925 2575 \nQ 2925 1869 2578 1258 \nQ 2231 647 1613 244 \nQ 1109 -88 516 -88 \nL 338 -88 \nz\nM 2275 2091 \nQ 2331 2497 2331 2741 \nQ 2331 3044 2228 3395 \nQ 2125 3747 1936 3934 \nQ 1747 4122 1506 4122 \nQ 1228 4122 1018 3872 \nQ 809 3622 809 3128 \nQ 809 2469 1088 2097 \nQ 1291 1828 1588 1828 \nQ 1731 1828 1928 1897 \nQ 2125 1966 2275 2091 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-2e\" d=\"M 800 606 \nQ 947 606 1047 504 \nQ 1147 403 1147 259 \nQ 1147 116 1045 14 \nQ 944 -88 800 -88 \nQ 656 -88 554 14 \nQ 453 116 453 259 \nQ 453 406 554 506 \nQ 656 606 800 606 \nz\n\" transform=\"scale(0.015625)\"/>\n      </defs>\n      <use xlink:href=\"#TimesNewRomanPSMT-56\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-4e\" x=\"72.216797\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-53\" x=\"144.433594\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-3a\" x=\"200.048828\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-20\" x=\"227.832031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"252.832031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"299.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-39\" x=\"349.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"399.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-2e\" x=\"449.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-37\" x=\"474.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"524.082031\"/>\n     </g>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"pca4282fe7f\">\n   <rect x=\"38.2\" y=\"23.199\" width=\"357.12\" height=\"266.112\"/>\n  </clipPath>\n </defs>\n</svg>\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from VNS import VNS\n",
    "\n",
    "optimizer = VNS(data=data)\n",
    "optimizer.optimize(iteration=200)\n",
    "visualize(optimizer)"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "PGA on eil101_m10 trial 1: 100%|██████████| 200/200 [00:00<00:00, 321.44it/s, best: 1185.40]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"402.52pt\" height=\"314.410375pt\" viewBox=\"0 0 402.52 314.410375\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2023-03-11T23:07:00.531815</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.6.2, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 314.410375 \nL 402.52 314.410375 \nL 402.52 0 \nL 0 0 \nz\n\" style=\"fill: #ffffff\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 38.2 289.311 \nL 395.32 289.311 \nL 395.32 23.199 \nL 38.2 23.199 \nz\n\" style=\"fill: #ffffff\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path id=\"m73723623e4\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"54.432727\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(51.432727 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-30\" d=\"M 231 2094 \nQ 231 2819 450 3342 \nQ 669 3866 1031 4122 \nQ 1313 4325 1613 4325 \nQ 2100 4325 2488 3828 \nQ 2972 3213 2972 2159 \nQ 2972 1422 2759 906 \nQ 2547 391 2217 158 \nQ 1888 -75 1581 -75 \nQ 975 -75 572 641 \nQ 231 1244 231 2094 \nz\nM 844 2016 \nQ 844 1141 1059 588 \nQ 1238 122 1591 122 \nQ 1759 122 1940 273 \nQ 2122 425 2216 781 \nQ 2359 1319 2359 2297 \nQ 2359 3022 2209 3506 \nQ 2097 3866 1919 4016 \nQ 1791 4119 1609 4119 \nQ 1397 4119 1231 3928 \nQ 1006 3669 925 3112 \nQ 844 2556 844 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"95.218474\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 25 -->\n      <g transform=\"translate(89.218474 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-32\" d=\"M 2934 816 \nL 2638 0 \nL 138 0 \nL 138 116 \nQ 1241 1122 1691 1759 \nQ 2141 2397 2141 2925 \nQ 2141 3328 1894 3587 \nQ 1647 3847 1303 3847 \nQ 991 3847 742 3664 \nQ 494 3481 375 3128 \nL 259 3128 \nQ 338 3706 661 4015 \nQ 984 4325 1469 4325 \nQ 1984 4325 2329 3994 \nQ 2675 3663 2675 3213 \nQ 2675 2891 2525 2569 \nQ 2294 2063 1775 1497 \nQ 997 647 803 472 \nL 1909 472 \nQ 2247 472 2383 497 \nQ 2519 522 2628 598 \nQ 2738 675 2819 816 \nL 2934 816 \nz\n\" transform=\"scale(0.015625)\"/>\n        <path id=\"TimesNewRomanPSMT-35\" d=\"M 2778 4238 \nL 2534 3706 \nL 1259 3706 \nL 981 3138 \nQ 1809 3016 2294 2522 \nQ 2709 2097 2709 1522 \nQ 2709 1188 2573 903 \nQ 2438 619 2231 419 \nQ 2025 219 1772 97 \nQ 1413 -75 1034 -75 \nQ 653 -75 479 54 \nQ 306 184 306 341 \nQ 306 428 378 495 \nQ 450 563 559 563 \nQ 641 563 702 538 \nQ 763 513 909 409 \nQ 1144 247 1384 247 \nQ 1750 247 2026 523 \nQ 2303 800 2303 1197 \nQ 2303 1581 2056 1914 \nQ 1809 2247 1375 2428 \nQ 1034 2569 447 2591 \nL 1259 4238 \nL 2778 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"136.004221\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 50 -->\n      <g transform=\"translate(130.004221 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-35\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"176.789968\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 75 -->\n      <g transform=\"translate(170.789968 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-37\" d=\"M 644 4238 \nL 2916 4238 \nL 2916 4119 \nL 1503 -88 \nL 1153 -88 \nL 2419 3728 \nL 1253 3728 \nQ 900 3728 750 3644 \nQ 488 3500 328 3200 \nL 238 3234 \nL 644 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"217.575715\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 100 -->\n      <g transform=\"translate(208.575715 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-31\" d=\"M 750 3822 \nL 1781 4325 \nL 1884 4325 \nL 1884 747 \nQ 1884 391 1914 303 \nQ 1944 216 2037 169 \nQ 2131 122 2419 116 \nL 2419 0 \nL 825 0 \nL 825 116 \nQ 1125 122 1212 167 \nQ 1300 213 1334 289 \nQ 1369 366 1369 747 \nL 1369 3034 \nQ 1369 3497 1338 3628 \nQ 1316 3728 1258 3775 \nQ 1200 3822 1119 3822 \nQ 1003 3822 797 3725 \nL 750 3822 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"258.361462\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 125 -->\n      <g transform=\"translate(249.361462 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_7\">\n     <g id=\"line2d_7\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"299.147209\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 150 -->\n      <g transform=\"translate(290.147209 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_8\">\n     <g id=\"line2d_8\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"339.932956\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 175 -->\n      <g transform=\"translate(330.932956 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_9\">\n     <g id=\"line2d_9\">\n      <g>\n       <use xlink:href=\"#m73723623e4\" x=\"380.718703\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 200 -->\n      <g transform=\"translate(371.718703 304.6435) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-32\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_10\">\n      <defs>\n       <path id=\"m97b13d2f5d\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"261.778819\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 1190 -->\n      <g transform=\"translate(7.65 265.945069) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-39\" d=\"M 338 -88 \nL 338 28 \nQ 744 34 1094 217 \nQ 1444 400 1770 856 \nQ 2097 1313 2225 1859 \nQ 1734 1544 1338 1544 \nQ 891 1544 572 1889 \nQ 253 2234 253 2806 \nQ 253 3363 572 3797 \nQ 956 4325 1575 4325 \nQ 2097 4325 2469 3894 \nQ 2925 3359 2925 2575 \nQ 2925 1869 2578 1258 \nQ 2231 647 1613 244 \nQ 1109 -88 516 -88 \nL 338 -88 \nz\nM 2275 2091 \nQ 2331 2497 2331 2741 \nQ 2331 3044 2228 3395 \nQ 2125 3747 1936 3934 \nQ 1747 4122 1506 4122 \nQ 1228 4122 1018 3872 \nQ 809 3622 809 3128 \nQ 809 2469 1088 2097 \nQ 1291 1828 1588 1828 \nQ 1731 1828 1928 1897 \nQ 2125 1966 2275 2091 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"46.25\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-39\" x=\"96.25\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"146.25\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_11\">\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"228.247186\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 1200 -->\n      <g transform=\"translate(7.2 232.413436) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_12\">\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"194.715553\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1210 -->\n      <g transform=\"translate(7.2 198.881803) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_13\">\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"161.183921\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 1220 -->\n      <g transform=\"translate(7.2 165.350171) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_14\">\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"127.652288\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 1230 -->\n      <g transform=\"translate(7.2 131.818538) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-33\" d=\"M 325 3431 \nQ 506 3859 782 4092 \nQ 1059 4325 1472 4325 \nQ 1981 4325 2253 3994 \nQ 2459 3747 2459 3466 \nQ 2459 3003 1878 2509 \nQ 2269 2356 2469 2072 \nQ 2669 1788 2669 1403 \nQ 2669 853 2319 450 \nQ 1863 -75 997 -75 \nQ 569 -75 414 31 \nQ 259 138 259 259 \nQ 259 350 332 419 \nQ 406 488 509 488 \nQ 588 488 669 463 \nQ 722 447 909 348 \nQ 1097 250 1169 231 \nQ 1284 197 1416 197 \nQ 1734 197 1970 444 \nQ 2206 691 2206 1028 \nQ 2206 1275 2097 1509 \nQ 2016 1684 1919 1775 \nQ 1784 1900 1550 2001 \nQ 1316 2103 1072 2103 \nL 972 2103 \nL 972 2197 \nQ 1219 2228 1467 2375 \nQ 1716 2522 1828 2728 \nQ 1941 2934 1941 3181 \nQ 1941 3503 1739 3701 \nQ 1538 3900 1238 3900 \nQ 753 3900 428 3381 \nL 325 3431 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_15\">\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"94.120655\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_15\">\n      <!-- 1240 -->\n      <g transform=\"translate(7.2 98.286905) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-34\" d=\"M 2978 1563 \nL 2978 1119 \nL 2409 1119 \nL 2409 0 \nL 1894 0 \nL 1894 1119 \nL 100 1119 \nL 100 1519 \nL 2066 4325 \nL 2409 4325 \nL 2409 1563 \nL 2978 1563 \nz\nM 1894 1563 \nL 1894 3666 \nL 406 1563 \nL 1894 1563 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_16\">\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"60.589022\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_16\">\n      <!-- 1250 -->\n      <g transform=\"translate(7.2 64.755272) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_8\">\n     <g id=\"line2d_17\">\n      <g>\n       <use xlink:href=\"#m97b13d2f5d\" x=\"38.2\" y=\"27.057389\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_17\">\n      <!-- 1260 -->\n      <g transform=\"translate(7.2 31.223639) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-36\" d=\"M 2869 4325 \nL 2869 4209 \nQ 2456 4169 2195 4045 \nQ 1934 3922 1679 3669 \nQ 1425 3416 1258 3105 \nQ 1091 2794 978 2366 \nQ 1428 2675 1881 2675 \nQ 2316 2675 2634 2325 \nQ 2953 1975 2953 1425 \nQ 2953 894 2631 456 \nQ 2244 -75 1606 -75 \nQ 1172 -75 869 213 \nQ 275 772 275 1663 \nQ 275 2231 503 2743 \nQ 731 3256 1154 3653 \nQ 1578 4050 1965 4187 \nQ 2353 4325 2688 4325 \nL 2869 4325 \nz\nM 925 2138 \nQ 869 1716 869 1456 \nQ 869 1156 980 804 \nQ 1091 453 1309 247 \nQ 1469 100 1697 100 \nQ 1969 100 2183 356 \nQ 2397 613 2397 1088 \nQ 2397 1622 2184 2012 \nQ 1972 2403 1581 2403 \nQ 1463 2403 1327 2353 \nQ 1191 2303 925 2138 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-36\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_18\">\n    <path d=\"M 54.432727 35.295 \nL 56.064157 41.447737 \nL 57.695587 52.285914 \nL 59.327017 67.316686 \nL 60.958447 67.316686 \nL 62.589877 71.308763 \nL 64.221307 83.168928 \nL 65.852736 83.938463 \nL 67.484166 118.572402 \nL 69.115596 130.867748 \nL 70.747026 149.668689 \nL 72.378456 170.643478 \nL 74.009886 173.905934 \nL 75.641316 184.359797 \nL 77.272746 184.359797 \nL 78.904175 189.142384 \nL 80.535605 189.142384 \nL 82.167035 206.752315 \nL 83.798465 211.79029 \nL 85.429895 219.672927 \nL 87.061325 225.785904 \nL 90.324185 225.785904 \nL 91.955614 226.7662 \nL 95.218474 252.284392 \nL 100.112764 252.284392 \nL 101.744194 252.567155 \nL 105.007053 252.567155 \nL 106.638483 255.017604 \nL 132.741361 255.017604 \nL 134.372791 274.449039 \nL 289.35863 274.449039 \nL 290.990059 277.215 \nL 379.087273 277.215 \nL 379.087273 277.215 \n\" clip-path=\"url(#pbed9806162)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 38.2 289.311 \nL 38.2 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 395.32 289.311 \nL 395.32 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 38.2 289.311 \nL 395.32 289.311 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 38.2 23.199 \nL 395.32 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"text_18\">\n    <!-- eil101_m10:  -->\n    <g transform=\"translate(178.562875 17.199) scale(0.144 -0.144)\">\n     <defs>\n      <path id=\"TimesNewRomanPSMT-65\" d=\"M 681 1784 \nQ 678 1147 991 784 \nQ 1303 422 1725 422 \nQ 2006 422 2214 576 \nQ 2422 731 2563 1106 \nL 2659 1044 \nQ 2594 616 2278 264 \nQ 1963 -88 1488 -88 \nQ 972 -88 605 314 \nQ 238 716 238 1394 \nQ 238 2128 614 2539 \nQ 991 2950 1559 2950 \nQ 2041 2950 2350 2633 \nQ 2659 2316 2659 1784 \nL 681 1784 \nz\nM 681 1966 \nL 2006 1966 \nQ 1991 2241 1941 2353 \nQ 1863 2528 1708 2628 \nQ 1553 2728 1384 2728 \nQ 1125 2728 920 2526 \nQ 716 2325 681 1966 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-69\" d=\"M 928 4444 \nQ 1059 4444 1151 4351 \nQ 1244 4259 1244 4128 \nQ 1244 3997 1151 3903 \nQ 1059 3809 928 3809 \nQ 797 3809 703 3903 \nQ 609 3997 609 4128 \nQ 609 4259 701 4351 \nQ 794 4444 928 4444 \nz\nM 1188 2947 \nL 1188 647 \nQ 1188 378 1227 289 \nQ 1266 200 1342 156 \nQ 1419 113 1622 113 \nL 1622 0 \nL 231 0 \nL 231 113 \nQ 441 113 512 153 \nQ 584 194 626 287 \nQ 669 381 669 647 \nL 669 1750 \nQ 669 2216 641 2353 \nQ 619 2453 572 2492 \nQ 525 2531 444 2531 \nQ 356 2531 231 2484 \nL 188 2597 \nL 1050 2947 \nL 1188 2947 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-6c\" d=\"M 1184 4444 \nL 1184 647 \nQ 1184 378 1223 290 \nQ 1263 203 1344 158 \nQ 1425 113 1647 113 \nL 1647 0 \nL 244 0 \nL 244 113 \nQ 441 113 512 153 \nQ 584 194 625 287 \nQ 666 381 666 647 \nL 666 3247 \nQ 666 3731 644 3842 \nQ 622 3953 573 3993 \nQ 525 4034 450 4034 \nQ 369 4034 244 3984 \nL 191 4094 \nL 1044 4444 \nL 1184 4444 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-5f\" d=\"M 3256 -1381 \nL -53 -1381 \nL -53 -1119 \nL 3256 -1119 \nL 3256 -1381 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-6d\" d=\"M 1050 2338 \nQ 1363 2650 1419 2697 \nQ 1559 2816 1721 2881 \nQ 1884 2947 2044 2947 \nQ 2313 2947 2506 2790 \nQ 2700 2634 2766 2338 \nQ 3088 2713 3309 2830 \nQ 3531 2947 3766 2947 \nQ 3994 2947 4170 2830 \nQ 4347 2713 4450 2447 \nQ 4519 2266 4519 1878 \nL 4519 647 \nQ 4519 378 4559 278 \nQ 4591 209 4675 161 \nQ 4759 113 4950 113 \nL 4950 0 \nL 3538 0 \nL 3538 113 \nL 3597 113 \nQ 3781 113 3884 184 \nQ 3956 234 3988 344 \nQ 4000 397 4000 647 \nL 4000 1878 \nQ 4000 2228 3916 2372 \nQ 3794 2572 3525 2572 \nQ 3359 2572 3192 2489 \nQ 3025 2406 2788 2181 \nL 2781 2147 \nL 2788 2013 \nL 2788 647 \nQ 2788 353 2820 281 \nQ 2853 209 2943 161 \nQ 3034 113 3253 113 \nL 3253 0 \nL 1806 0 \nL 1806 113 \nQ 2044 113 2133 169 \nQ 2222 225 2256 338 \nQ 2272 391 2272 647 \nL 2272 1878 \nQ 2272 2228 2169 2381 \nQ 2031 2581 1784 2581 \nQ 1616 2581 1450 2491 \nQ 1191 2353 1050 2181 \nL 1050 647 \nQ 1050 366 1089 281 \nQ 1128 197 1204 155 \nQ 1281 113 1516 113 \nL 1516 0 \nL 100 0 \nL 100 113 \nQ 297 113 375 155 \nQ 453 197 493 289 \nQ 534 381 534 647 \nL 534 1741 \nQ 534 2213 506 2350 \nQ 484 2453 437 2492 \nQ 391 2531 309 2531 \nQ 222 2531 100 2484 \nL 53 2597 \nL 916 2947 \nL 1050 2947 \nL 1050 2338 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-3a\" d=\"M 903 2950 \nQ 1047 2950 1148 2848 \nQ 1250 2747 1250 2603 \nQ 1250 2459 1148 2357 \nQ 1047 2256 903 2256 \nQ 759 2256 657 2357 \nQ 556 2459 556 2603 \nQ 556 2747 657 2848 \nQ 759 2950 903 2950 \nz\nM 897 609 \nQ 1044 609 1145 506 \nQ 1247 403 1247 259 \nQ 1247 116 1144 14 \nQ 1041 -88 897 -88 \nQ 753 -88 651 14 \nQ 550 116 550 259 \nQ 550 403 651 506 \nQ 753 609 897 609 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-20\" transform=\"scale(0.015625)\"/>\n     </defs>\n     <use xlink:href=\"#TimesNewRomanPSMT-65\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-69\" x=\"44.384766\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-6c\" x=\"72.167969\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"99.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"149.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"199.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-5f\" x=\"249.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-6d\" x=\"299.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"377.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"427.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-3a\" x=\"477.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-20\" x=\"505.517578\"/>\n    </g>\n   </g>\n   <g id=\"legend_1\">\n    <g id=\"patch_7\">\n     <path d=\"M 279.630625 49.765875 \nL 386.92 49.765875 \nQ 389.32 49.765875 389.32 47.365875 \nL 389.32 31.599 \nQ 389.32 29.199 386.92 29.199 \nL 279.630625 29.199 \nQ 277.230625 29.199 277.230625 31.599 \nL 277.230625 47.365875 \nQ 277.230625 49.765875 279.630625 49.765875 \nz\n\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n    </g>\n    <g id=\"line2d_19\">\n     <path d=\"M 282.030625 38.199 \nL 294.030625 38.199 \nL 306.030625 38.199 \n\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n    </g>\n    <g id=\"text_19\">\n     <!-- PGA: 1185.40 -->\n     <g transform=\"translate(315.630625 42.399) scale(0.12 -0.12)\">\n      <defs>\n       <path id=\"TimesNewRomanPSMT-50\" d=\"M 1313 1984 \nL 1313 750 \nQ 1313 350 1400 253 \nQ 1519 116 1759 116 \nL 1922 116 \nL 1922 0 \nL 106 0 \nL 106 116 \nL 266 116 \nQ 534 116 650 291 \nQ 713 388 713 750 \nL 713 3488 \nQ 713 3888 628 3984 \nQ 506 4122 266 4122 \nL 106 4122 \nL 106 4238 \nL 1659 4238 \nQ 2228 4238 2556 4120 \nQ 2884 4003 3109 3725 \nQ 3334 3447 3334 3066 \nQ 3334 2547 2992 2222 \nQ 2650 1897 2025 1897 \nQ 1872 1897 1694 1919 \nQ 1516 1941 1313 1984 \nz\nM 1313 2163 \nQ 1478 2131 1606 2115 \nQ 1734 2100 1825 2100 \nQ 2150 2100 2386 2351 \nQ 2622 2603 2622 3003 \nQ 2622 3278 2509 3514 \nQ 2397 3750 2190 3867 \nQ 1984 3984 1722 3984 \nQ 1563 3984 1313 3925 \nL 1313 2163 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-47\" d=\"M 3928 4334 \nL 4038 2997 \nL 3928 2997 \nQ 3763 3497 3500 3750 \nQ 3122 4116 2528 4116 \nQ 1719 4116 1297 3475 \nQ 944 2934 944 2188 \nQ 944 1581 1178 1081 \nQ 1413 581 1792 348 \nQ 2172 116 2572 116 \nQ 2806 116 3025 175 \nQ 3244 234 3447 350 \nL 3447 1575 \nQ 3447 1894 3398 1992 \nQ 3350 2091 3248 2142 \nQ 3147 2194 2891 2194 \nL 2891 2313 \nL 4531 2313 \nL 4531 2194 \nL 4453 2194 \nQ 4209 2194 4119 2031 \nQ 4056 1916 4056 1575 \nL 4056 278 \nQ 3697 84 3347 -6 \nQ 2997 -97 2569 -97 \nQ 1341 -97 703 691 \nQ 225 1281 225 2053 \nQ 225 2613 494 3125 \nQ 813 3734 1369 4063 \nQ 1834 4334 2469 4334 \nQ 2700 4334 2889 4296 \nQ 3078 4259 3425 4131 \nQ 3600 4066 3659 4066 \nQ 3719 4066 3761 4120 \nQ 3803 4175 3813 4334 \nL 3928 4334 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-41\" d=\"M 2928 1419 \nL 1288 1419 \nL 1000 750 \nQ 894 503 894 381 \nQ 894 284 986 211 \nQ 1078 138 1384 116 \nL 1384 0 \nL 50 0 \nL 50 116 \nQ 316 163 394 238 \nQ 553 388 747 847 \nL 2238 4334 \nL 2347 4334 \nL 3822 809 \nQ 4000 384 4145 257 \nQ 4291 131 4550 116 \nL 4550 0 \nL 2878 0 \nL 2878 116 \nQ 3131 128 3220 200 \nQ 3309 272 3309 375 \nQ 3309 513 3184 809 \nL 2928 1419 \nz\nM 2841 1650 \nL 2122 3363 \nL 1384 1650 \nL 2841 1650 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-38\" d=\"M 1228 2134 \nQ 725 2547 579 2797 \nQ 434 3047 434 3316 \nQ 434 3728 753 4026 \nQ 1072 4325 1600 4325 \nQ 2113 4325 2425 4047 \nQ 2738 3769 2738 3413 \nQ 2738 3175 2569 2928 \nQ 2400 2681 1866 2347 \nQ 2416 1922 2594 1678 \nQ 2831 1359 2831 1006 \nQ 2831 559 2490 242 \nQ 2150 -75 1597 -75 \nQ 994 -75 656 303 \nQ 388 606 388 966 \nQ 388 1247 577 1523 \nQ 766 1800 1228 2134 \nz\nM 1719 2469 \nQ 2094 2806 2194 3001 \nQ 2294 3197 2294 3444 \nQ 2294 3772 2109 3958 \nQ 1925 4144 1606 4144 \nQ 1288 4144 1088 3959 \nQ 888 3775 888 3528 \nQ 888 3366 970 3203 \nQ 1053 3041 1206 2894 \nL 1719 2469 \nz\nM 1375 2016 \nQ 1116 1797 991 1539 \nQ 866 1281 866 981 \nQ 866 578 1086 336 \nQ 1306 94 1647 94 \nQ 1984 94 2187 284 \nQ 2391 475 2391 747 \nQ 2391 972 2272 1150 \nQ 2050 1481 1375 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-2e\" d=\"M 800 606 \nQ 947 606 1047 504 \nQ 1147 403 1147 259 \nQ 1147 116 1045 14 \nQ 944 -88 800 -88 \nQ 656 -88 554 14 \nQ 453 116 453 259 \nQ 453 406 554 506 \nQ 656 606 800 606 \nz\n\" transform=\"scale(0.015625)\"/>\n      </defs>\n      <use xlink:href=\"#TimesNewRomanPSMT-50\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-47\" x=\"55.615234\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-41\" x=\"127.832031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-3a\" x=\"200.048828\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-20\" x=\"227.832031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"252.832031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"299.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-38\" x=\"349.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"399.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-2e\" x=\"449.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"474.082031\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"524.082031\"/>\n     </g>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"pbed9806162\">\n   <rect x=\"38.2\" y=\"23.199\" width=\"357.12\" height=\"266.112\"/>\n  </clipPath>\n </defs>\n</svg>\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from PGA import PGA\n",
    "\n",
    "optimizer = PGA(data=data)\n",
    "optimizer.optimize(iteration=200)\n",
    "visualize(optimizer)"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "ABC on eil101_m10 trial 1: 100%|██████████| 1000/1000 [00:37<00:00, 26.56it/s, best: 1135.99]\n",
      "IWO on eil101_m10 trial 1: 100%|██████████| 1000/1000 [00:43<00:00, 23.24it/s, best: 1144.17]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"402.52pt\" height=\"314.410375pt\" viewBox=\"0 0 402.52 314.410375\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2023-03-11T23:03:21.116072</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.6.2, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 314.410375 \nL 402.52 314.410375 \nL 402.52 0 \nL 0 0 \nz\n\" style=\"fill: #ffffff\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 38.2 289.311 \nL 395.32 289.311 \nL 395.32 23.199 \nL 38.2 23.199 \nz\n\" style=\"fill: #ffffff\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path id=\"mf0dc03e0f5\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#mf0dc03e0f5\" x=\"54.432727\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(51.432727 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-30\" d=\"M 231 2094 \nQ 231 2819 450 3342 \nQ 669 3866 1031 4122 \nQ 1313 4325 1613 4325 \nQ 2100 4325 2488 3828 \nQ 2972 3213 2972 2159 \nQ 2972 1422 2759 906 \nQ 2547 391 2217 158 \nQ 1888 -75 1581 -75 \nQ 975 -75 572 641 \nQ 231 1244 231 2094 \nz\nM 844 2016 \nQ 844 1141 1059 588 \nQ 1238 122 1591 122 \nQ 1759 122 1940 273 \nQ 2122 425 2216 781 \nQ 2359 1319 2359 2297 \nQ 2359 3022 2209 3506 \nQ 2097 3866 1919 4016 \nQ 1791 4119 1609 4119 \nQ 1397 4119 1231 3928 \nQ 1006 3669 925 3112 \nQ 844 2556 844 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use xlink:href=\"#mf0dc03e0f5\" x=\"119.428632\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 200 -->\n      <g transform=\"translate(110.428632 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-32\" d=\"M 2934 816 \nL 2638 0 \nL 138 0 \nL 138 116 \nQ 1241 1122 1691 1759 \nQ 2141 2397 2141 2925 \nQ 2141 3328 1894 3587 \nQ 1647 3847 1303 3847 \nQ 991 3847 742 3664 \nQ 494 3481 375 3128 \nL 259 3128 \nQ 338 3706 661 4015 \nQ 984 4325 1469 4325 \nQ 1984 4325 2329 3994 \nQ 2675 3663 2675 3213 \nQ 2675 2891 2525 2569 \nQ 2294 2063 1775 1497 \nQ 997 647 803 472 \nL 1909 472 \nQ 2247 472 2383 497 \nQ 2519 522 2628 598 \nQ 2738 675 2819 816 \nL 2934 816 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use xlink:href=\"#mf0dc03e0f5\" x=\"184.424537\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 400 -->\n      <g transform=\"translate(175.424537 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-34\" d=\"M 2978 1563 \nL 2978 1119 \nL 2409 1119 \nL 2409 0 \nL 1894 0 \nL 1894 1119 \nL 100 1119 \nL 100 1519 \nL 2066 4325 \nL 2409 4325 \nL 2409 1563 \nL 2978 1563 \nz\nM 1894 1563 \nL 1894 3666 \nL 406 1563 \nL 1894 1563 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-34\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use xlink:href=\"#mf0dc03e0f5\" x=\"249.420442\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 600 -->\n      <g transform=\"translate(240.420442 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-36\" d=\"M 2869 4325 \nL 2869 4209 \nQ 2456 4169 2195 4045 \nQ 1934 3922 1679 3669 \nQ 1425 3416 1258 3105 \nQ 1091 2794 978 2366 \nQ 1428 2675 1881 2675 \nQ 2316 2675 2634 2325 \nQ 2953 1975 2953 1425 \nQ 2953 894 2631 456 \nQ 2244 -75 1606 -75 \nQ 1172 -75 869 213 \nQ 275 772 275 1663 \nQ 275 2231 503 2743 \nQ 731 3256 1154 3653 \nQ 1578 4050 1965 4187 \nQ 2353 4325 2688 4325 \nL 2869 4325 \nz\nM 925 2138 \nQ 869 1716 869 1456 \nQ 869 1156 980 804 \nQ 1091 453 1309 247 \nQ 1469 100 1697 100 \nQ 1969 100 2183 356 \nQ 2397 613 2397 1088 \nQ 2397 1622 2184 2012 \nQ 1972 2403 1581 2403 \nQ 1463 2403 1327 2353 \nQ 1191 2303 925 2138 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-36\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use xlink:href=\"#mf0dc03e0f5\" x=\"314.416347\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 800 -->\n      <g transform=\"translate(305.416347 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-38\" d=\"M 1228 2134 \nQ 725 2547 579 2797 \nQ 434 3047 434 3316 \nQ 434 3728 753 4026 \nQ 1072 4325 1600 4325 \nQ 2113 4325 2425 4047 \nQ 2738 3769 2738 3413 \nQ 2738 3175 2569 2928 \nQ 2400 2681 1866 2347 \nQ 2416 1922 2594 1678 \nQ 2831 1359 2831 1006 \nQ 2831 559 2490 242 \nQ 2150 -75 1597 -75 \nQ 994 -75 656 303 \nQ 388 606 388 966 \nQ 388 1247 577 1523 \nQ 766 1800 1228 2134 \nz\nM 1719 2469 \nQ 2094 2806 2194 3001 \nQ 2294 3197 2294 3444 \nQ 2294 3772 2109 3958 \nQ 1925 4144 1606 4144 \nQ 1288 4144 1088 3959 \nQ 888 3775 888 3528 \nQ 888 3366 970 3203 \nQ 1053 3041 1206 2894 \nL 1719 2469 \nz\nM 1375 2016 \nQ 1116 1797 991 1539 \nQ 866 1281 866 981 \nQ 866 578 1086 336 \nQ 1306 94 1647 94 \nQ 1984 94 2187 284 \nQ 2391 475 2391 747 \nQ 2391 972 2272 1150 \nQ 2050 1481 1375 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-38\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use xlink:href=\"#mf0dc03e0f5\" x=\"379.412252\" y=\"289.311\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 1000 -->\n      <g transform=\"translate(367.412252 304.6435) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-31\" d=\"M 750 3822 \nL 1781 4325 \nL 1884 4325 \nL 1884 747 \nQ 1884 391 1914 303 \nQ 1944 216 2037 169 \nQ 2131 122 2419 116 \nL 2419 0 \nL 825 0 \nL 825 116 \nQ 1125 122 1212 167 \nQ 1300 213 1334 289 \nQ 1369 366 1369 747 \nL 1369 3034 \nQ 1369 3497 1338 3628 \nQ 1316 3728 1258 3775 \nQ 1200 3822 1119 3822 \nQ 1003 3822 797 3725 \nL 750 3822 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_7\">\n      <defs>\n       <path id=\"m3ca76afe33\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"258.770363\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 1150 -->\n      <g transform=\"translate(7.65 262.936613) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-35\" d=\"M 2778 4238 \nL 2534 3706 \nL 1259 3706 \nL 981 3138 \nQ 1809 3016 2294 2522 \nQ 2709 2097 2709 1522 \nQ 2709 1188 2573 903 \nQ 2438 619 2231 419 \nQ 2025 219 1772 97 \nQ 1413 -75 1034 -75 \nQ 653 -75 479 54 \nQ 306 184 306 341 \nQ 306 428 378 495 \nQ 450 563 559 563 \nQ 641 563 702 538 \nQ 763 513 909 409 \nQ 1144 247 1384 247 \nQ 1750 247 2026 523 \nQ 2303 800 2303 1197 \nQ 2303 1581 2056 1914 \nQ 1809 2247 1375 2428 \nQ 1034 2569 447 2591 \nL 1259 4238 \nL 2778 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"46.25\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"96.25\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"146.25\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_8\">\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"225.864091\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 1175 -->\n      <g transform=\"translate(7.65 230.030341) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-37\" d=\"M 644 4238 \nL 2916 4238 \nL 2916 4119 \nL 1503 -88 \nL 1153 -88 \nL 2419 3728 \nL 1253 3728 \nQ 900 3728 750 3644 \nQ 488 3500 328 3200 \nL 238 3234 \nL 644 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"46.25\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\" x=\"96.25\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"146.25\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_9\">\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"192.957818\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 1200 -->\n      <g transform=\"translate(7.2 197.124068) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_10\">\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"160.051546\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 1225 -->\n      <g transform=\"translate(7.2 164.217796) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_11\">\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"127.145273\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 1250 -->\n      <g transform=\"translate(7.2 131.311523) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_12\">\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"94.239001\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1275 -->\n      <g transform=\"translate(7.2 98.405251) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_13\">\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"61.332728\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 1300 -->\n      <g transform=\"translate(7.2 65.498978) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-33\" d=\"M 325 3431 \nQ 506 3859 782 4092 \nQ 1059 4325 1472 4325 \nQ 1981 4325 2253 3994 \nQ 2459 3747 2459 3466 \nQ 2459 3003 1878 2509 \nQ 2269 2356 2469 2072 \nQ 2669 1788 2669 1403 \nQ 2669 853 2319 450 \nQ 1863 -75 997 -75 \nQ 569 -75 414 31 \nQ 259 138 259 259 \nQ 259 350 332 419 \nQ 406 488 509 488 \nQ 588 488 669 463 \nQ 722 447 909 348 \nQ 1097 250 1169 231 \nQ 1284 197 1416 197 \nQ 1734 197 1970 444 \nQ 2206 691 2206 1028 \nQ 2206 1275 2097 1509 \nQ 2016 1684 1919 1775 \nQ 1784 1900 1550 2001 \nQ 1316 2103 1072 2103 \nL 972 2103 \nL 972 2197 \nQ 1219 2228 1467 2375 \nQ 1716 2522 1828 2728 \nQ 1941 2934 1941 3181 \nQ 1941 3503 1739 3701 \nQ 1538 3900 1238 3900 \nQ 753 3900 428 3381 \nL 325 3431 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_8\">\n     <g id=\"line2d_14\">\n      <g>\n       <use xlink:href=\"#m3ca76afe33\" x=\"38.2\" y=\"28.426456\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 1325 -->\n      <g transform=\"translate(7.2 32.592706) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_15\">\n    <path d=\"M 54.432727 35.295 \nL 55.732645 35.295 \nL 56.707584 55.657446 \nL 57.357543 55.657446 \nL 57.682523 64.660782 \nL 58.007502 64.660782 \nL 58.332482 67.829948 \nL 58.982441 83.157968 \nL 59.30742 84.805153 \nL 59.6324 90.699764 \nL 59.957379 90.699764 \nL 60.282359 91.714172 \nL 60.607338 92.103768 \nL 60.932318 93.390741 \nL 61.257297 101.553644 \nL 61.582277 101.553644 \nL 61.907256 105.630304 \nL 62.232236 121.271519 \nL 62.557215 121.341391 \nL 62.882195 122.206404 \nL 63.207174 122.206404 \nL 63.532154 122.375047 \nL 63.857133 136.984808 \nL 64.182113 136.984808 \nL 64.507093 138.866806 \nL 64.832072 146.960079 \nL 65.482031 151.700414 \nL 67.756888 151.700414 \nL 68.081867 219.487235 \nL 68.406847 221.876762 \nL 68.731826 230.498443 \nL 69.056806 234.526512 \nL 69.381785 235.332505 \nL 69.706765 235.332505 \nL 70.031744 238.873921 \nL 70.356724 240.865884 \nL 76.206355 240.865884 \nL 76.531335 242.409109 \nL 76.856314 242.409109 \nL 77.181294 244.904 \nL 77.506274 244.904 \nL 77.831253 259.090723 \nL 78.156233 261.585613 \nL 78.481212 265.539155 \nL 86.280721 265.539155 \nL 86.6057 268.085744 \nL 88.230598 268.085744 \nL 88.555577 268.497752 \nL 98.954922 268.578108 \nL 99.279902 273.306441 \nL 100.25484 273.306441 \nL 100.57982 274.319133 \nL 114.553939 274.319133 \nL 114.878919 276.67622 \nL 127.55312 276.738723 \nL 127.8781 276.90287 \nL 299.792269 276.90287 \nL 300.117248 277.215 \nL 379.087273 277.215 \nL 379.087273 277.215 \n\" clip-path=\"url(#pc52f68119b)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n   </g>\n   <g id=\"line2d_16\">\n    <path d=\"M 54.432727 72.925081 \nL 54.757707 72.925081 \nL 55.082686 77.089464 \nL 55.407666 91.975237 \nL 55.732645 91.975237 \nL 56.057625 94.06519 \nL 56.382604 102.668771 \nL 56.707584 103.612255 \nL 57.032563 103.612255 \nL 57.357543 115.456855 \nL 57.682523 115.664655 \nL 58.007502 122.338693 \nL 58.332482 122.338693 \nL 58.657461 126.475523 \nL 59.30742 128.854 \nL 59.6324 128.854 \nL 59.957379 129.431061 \nL 60.282359 136.312899 \nL 60.607338 138.402852 \nL 60.932318 143.240426 \nL 61.257297 143.240426 \nL 61.582277 149.498492 \nL 62.232236 149.510196 \nL 62.557215 152.697525 \nL 63.207174 153.166723 \nL 63.532154 162.409853 \nL 63.857133 162.409853 \nL 64.507093 165.481749 \nL 64.832072 165.481749 \nL 65.157052 172.409276 \nL 65.482031 172.959039 \nL 65.807011 176.484938 \nL 66.13199 178.599646 \nL 66.45697 179.890964 \nL 67.431908 179.890964 \nL 68.081867 180.006038 \nL 68.406847 181.411654 \nL 74.906437 181.411654 \nL 75.231417 192.388846 \nL 75.556396 192.388846 \nL 75.881376 192.900765 \nL 77.506274 192.900765 \nL 77.831253 194.520052 \nL 78.156233 194.90021 \nL 80.431089 194.90021 \nL 80.756069 199.952629 \nL 84.655823 199.952629 \nL 84.980803 201.310545 \nL 85.305782 201.310545 \nL 85.630762 202.956257 \nL 86.93068 202.956257 \nL 87.255659 203.544229 \nL 87.580639 203.544229 \nL 88.230598 211.24333 \nL 88.555577 212.593667 \nL 88.880557 212.992243 \nL 89.530516 213.150848 \nL 89.855495 213.150848 \nL 90.180475 213.721975 \nL 91.155414 213.772937 \nL 91.480393 213.772937 \nL 91.805373 217.461069 \nL 92.130352 224.787373 \nL 92.455332 228.454594 \nL 92.780311 228.848338 \nL 314.416347 228.848338 \nL 314.741327 232.215766 \nL 315.066306 232.215766 \nL 315.716265 251.342069 \nL 316.041245 251.342069 \nL 316.366224 262.235646 \nL 319.61602 262.235646 \nL 319.940999 266.438372 \nL 379.087273 266.438372 \nL 379.087273 266.438372 \n\" clip-path=\"url(#pc52f68119b)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 38.2 289.311 \nL 38.2 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 395.32 289.311 \nL 395.32 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 38.2 289.311 \nL 395.32 289.311 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 38.2 23.199 \nL 395.32 23.199 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"text_15\">\n    <!-- eil101_m10:  -->\n    <g transform=\"translate(178.562875 17.199) scale(0.144 -0.144)\">\n     <defs>\n      <path id=\"TimesNewRomanPSMT-65\" d=\"M 681 1784 \nQ 678 1147 991 784 \nQ 1303 422 1725 422 \nQ 2006 422 2214 576 \nQ 2422 731 2563 1106 \nL 2659 1044 \nQ 2594 616 2278 264 \nQ 1963 -88 1488 -88 \nQ 972 -88 605 314 \nQ 238 716 238 1394 \nQ 238 2128 614 2539 \nQ 991 2950 1559 2950 \nQ 2041 2950 2350 2633 \nQ 2659 2316 2659 1784 \nL 681 1784 \nz\nM 681 1966 \nL 2006 1966 \nQ 1991 2241 1941 2353 \nQ 1863 2528 1708 2628 \nQ 1553 2728 1384 2728 \nQ 1125 2728 920 2526 \nQ 716 2325 681 1966 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-69\" d=\"M 928 4444 \nQ 1059 4444 1151 4351 \nQ 1244 4259 1244 4128 \nQ 1244 3997 1151 3903 \nQ 1059 3809 928 3809 \nQ 797 3809 703 3903 \nQ 609 3997 609 4128 \nQ 609 4259 701 4351 \nQ 794 4444 928 4444 \nz\nM 1188 2947 \nL 1188 647 \nQ 1188 378 1227 289 \nQ 1266 200 1342 156 \nQ 1419 113 1622 113 \nL 1622 0 \nL 231 0 \nL 231 113 \nQ 441 113 512 153 \nQ 584 194 626 287 \nQ 669 381 669 647 \nL 669 1750 \nQ 669 2216 641 2353 \nQ 619 2453 572 2492 \nQ 525 2531 444 2531 \nQ 356 2531 231 2484 \nL 188 2597 \nL 1050 2947 \nL 1188 2947 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-6c\" d=\"M 1184 4444 \nL 1184 647 \nQ 1184 378 1223 290 \nQ 1263 203 1344 158 \nQ 1425 113 1647 113 \nL 1647 0 \nL 244 0 \nL 244 113 \nQ 441 113 512 153 \nQ 584 194 625 287 \nQ 666 381 666 647 \nL 666 3247 \nQ 666 3731 644 3842 \nQ 622 3953 573 3993 \nQ 525 4034 450 4034 \nQ 369 4034 244 3984 \nL 191 4094 \nL 1044 4444 \nL 1184 4444 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-5f\" d=\"M 3256 -1381 \nL -53 -1381 \nL -53 -1119 \nL 3256 -1119 \nL 3256 -1381 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-6d\" d=\"M 1050 2338 \nQ 1363 2650 1419 2697 \nQ 1559 2816 1721 2881 \nQ 1884 2947 2044 2947 \nQ 2313 2947 2506 2790 \nQ 2700 2634 2766 2338 \nQ 3088 2713 3309 2830 \nQ 3531 2947 3766 2947 \nQ 3994 2947 4170 2830 \nQ 4347 2713 4450 2447 \nQ 4519 2266 4519 1878 \nL 4519 647 \nQ 4519 378 4559 278 \nQ 4591 209 4675 161 \nQ 4759 113 4950 113 \nL 4950 0 \nL 3538 0 \nL 3538 113 \nL 3597 113 \nQ 3781 113 3884 184 \nQ 3956 234 3988 344 \nQ 4000 397 4000 647 \nL 4000 1878 \nQ 4000 2228 3916 2372 \nQ 3794 2572 3525 2572 \nQ 3359 2572 3192 2489 \nQ 3025 2406 2788 2181 \nL 2781 2147 \nL 2788 2013 \nL 2788 647 \nQ 2788 353 2820 281 \nQ 2853 209 2943 161 \nQ 3034 113 3253 113 \nL 3253 0 \nL 1806 0 \nL 1806 113 \nQ 2044 113 2133 169 \nQ 2222 225 2256 338 \nQ 2272 391 2272 647 \nL 2272 1878 \nQ 2272 2228 2169 2381 \nQ 2031 2581 1784 2581 \nQ 1616 2581 1450 2491 \nQ 1191 2353 1050 2181 \nL 1050 647 \nQ 1050 366 1089 281 \nQ 1128 197 1204 155 \nQ 1281 113 1516 113 \nL 1516 0 \nL 100 0 \nL 100 113 \nQ 297 113 375 155 \nQ 453 197 493 289 \nQ 534 381 534 647 \nL 534 1741 \nQ 534 2213 506 2350 \nQ 484 2453 437 2492 \nQ 391 2531 309 2531 \nQ 222 2531 100 2484 \nL 53 2597 \nL 916 2947 \nL 1050 2947 \nL 1050 2338 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-3a\" d=\"M 903 2950 \nQ 1047 2950 1148 2848 \nQ 1250 2747 1250 2603 \nQ 1250 2459 1148 2357 \nQ 1047 2256 903 2256 \nQ 759 2256 657 2357 \nQ 556 2459 556 2603 \nQ 556 2747 657 2848 \nQ 759 2950 903 2950 \nz\nM 897 609 \nQ 1044 609 1145 506 \nQ 1247 403 1247 259 \nQ 1247 116 1144 14 \nQ 1041 -88 897 -88 \nQ 753 -88 651 14 \nQ 550 116 550 259 \nQ 550 403 651 506 \nQ 753 609 897 609 \nz\n\" transform=\"scale(0.015625)\"/>\n      <path id=\"TimesNewRomanPSMT-20\" transform=\"scale(0.015625)\"/>\n     </defs>\n     <use xlink:href=\"#TimesNewRomanPSMT-65\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-69\" x=\"44.384766\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-6c\" x=\"72.167969\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"99.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"149.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"199.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-5f\" x=\"249.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-6d\" x=\"299.951172\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"377.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"427.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-3a\" x=\"477.734375\"/>\n     <use xlink:href=\"#TimesNewRomanPSMT-20\" x=\"505.517578\"/>\n    </g>\n   </g>\n   <g id=\"legend_1\">\n    <g id=\"patch_7\">\n     <path d=\"M 278.96125 66.73275 \nL 386.92 66.73275 \nQ 389.32 66.73275 389.32 64.33275 \nL 389.32 31.599 \nQ 389.32 29.199 386.92 29.199 \nL 278.96125 29.199 \nQ 276.56125 29.199 276.56125 31.599 \nL 276.56125 64.33275 \nQ 276.56125 66.73275 278.96125 66.73275 \nz\n\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n    </g>\n    <g id=\"line2d_17\">\n     <path d=\"M 281.36125 38.199 \nL 293.36125 38.199 \nL 305.36125 38.199 \n\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n    </g>\n    <g id=\"text_16\">\n     <!-- ABC: 1135.99 -->\n     <g transform=\"translate(314.96125 42.399) scale(0.12 -0.12)\">\n      <defs>\n       <path id=\"TimesNewRomanPSMT-41\" d=\"M 2928 1419 \nL 1288 1419 \nL 1000 750 \nQ 894 503 894 381 \nQ 894 284 986 211 \nQ 1078 138 1384 116 \nL 1384 0 \nL 50 0 \nL 50 116 \nQ 316 163 394 238 \nQ 553 388 747 847 \nL 2238 4334 \nL 2347 4334 \nL 3822 809 \nQ 4000 384 4145 257 \nQ 4291 131 4550 116 \nL 4550 0 \nL 2878 0 \nL 2878 116 \nQ 3131 128 3220 200 \nQ 3309 272 3309 375 \nQ 3309 513 3184 809 \nL 2928 1419 \nz\nM 2841 1650 \nL 2122 3363 \nL 1384 1650 \nL 2841 1650 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-42\" d=\"M 2956 2163 \nQ 3397 2069 3616 1863 \nQ 3919 1575 3919 1159 \nQ 3919 844 3719 555 \nQ 3519 266 3170 133 \nQ 2822 0 2106 0 \nL 106 0 \nL 106 116 \nL 266 116 \nQ 531 116 647 284 \nQ 719 394 719 750 \nL 719 3488 \nQ 719 3881 628 3984 \nQ 506 4122 266 4122 \nL 106 4122 \nL 106 4238 \nL 1938 4238 \nQ 2450 4238 2759 4163 \nQ 3228 4050 3475 3764 \nQ 3722 3478 3722 3106 \nQ 3722 2788 3528 2536 \nQ 3334 2284 2956 2163 \nz\nM 1319 2331 \nQ 1434 2309 1582 2298 \nQ 1731 2288 1909 2288 \nQ 2366 2288 2595 2386 \nQ 2825 2484 2947 2687 \nQ 3069 2891 3069 3131 \nQ 3069 3503 2766 3765 \nQ 2463 4028 1881 4028 \nQ 1569 4028 1319 3959 \nL 1319 2331 \nz\nM 1319 306 \nQ 1681 222 2034 222 \nQ 2600 222 2897 476 \nQ 3194 731 3194 1106 \nQ 3194 1353 3059 1581 \nQ 2925 1809 2622 1940 \nQ 2319 2072 1872 2072 \nQ 1678 2072 1540 2065 \nQ 1403 2059 1319 2044 \nL 1319 306 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-43\" d=\"M 3853 4334 \nL 3950 2894 \nL 3853 2894 \nQ 3659 3541 3300 3825 \nQ 2941 4109 2438 4109 \nQ 2016 4109 1675 3895 \nQ 1334 3681 1139 3212 \nQ 944 2744 944 2047 \nQ 944 1472 1128 1050 \nQ 1313 628 1683 403 \nQ 2053 178 2528 178 \nQ 2941 178 3256 354 \nQ 3572 531 3950 1056 \nL 4047 994 \nQ 3728 428 3303 165 \nQ 2878 -97 2294 -97 \nQ 1241 -97 663 684 \nQ 231 1266 231 2053 \nQ 231 2688 515 3219 \nQ 800 3750 1298 4042 \nQ 1797 4334 2388 4334 \nQ 2847 4334 3294 4109 \nQ 3425 4041 3481 4041 \nQ 3566 4041 3628 4100 \nQ 3709 4184 3744 4334 \nL 3853 4334 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-2e\" d=\"M 800 606 \nQ 947 606 1047 504 \nQ 1147 403 1147 259 \nQ 1147 116 1045 14 \nQ 944 -88 800 -88 \nQ 656 -88 554 14 \nQ 453 116 453 259 \nQ 453 406 554 506 \nQ 656 606 800 606 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-39\" d=\"M 338 -88 \nL 338 28 \nQ 744 34 1094 217 \nQ 1444 400 1770 856 \nQ 2097 1313 2225 1859 \nQ 1734 1544 1338 1544 \nQ 891 1544 572 1889 \nQ 253 2234 253 2806 \nQ 253 3363 572 3797 \nQ 956 4325 1575 4325 \nQ 2097 4325 2469 3894 \nQ 2925 3359 2925 2575 \nQ 2925 1869 2578 1258 \nQ 2231 647 1613 244 \nQ 1109 -88 516 -88 \nL 338 -88 \nz\nM 2275 2091 \nQ 2331 2497 2331 2741 \nQ 2331 3044 2228 3395 \nQ 2125 3747 1936 3934 \nQ 1747 4122 1506 4122 \nQ 1228 4122 1018 3872 \nQ 809 3622 809 3128 \nQ 809 2469 1088 2097 \nQ 1291 1828 1588 1828 \nQ 1731 1828 1928 1897 \nQ 2125 1966 2275 2091 \nz\n\" transform=\"scale(0.015625)\"/>\n      </defs>\n      <use xlink:href=\"#TimesNewRomanPSMT-41\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-42\" x=\"72.216797\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-43\" x=\"138.916016\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-3a\" x=\"205.615234\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-20\" x=\"233.398438\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"258.398438\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"304.648438\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"354.648438\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"404.648438\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-2e\" x=\"454.648438\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-39\" x=\"479.648438\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-39\" x=\"529.648438\"/>\n     </g>\n    </g>\n    <g id=\"line2d_18\">\n     <path d=\"M 281.36125 55.165875 \nL 293.36125 55.165875 \nL 305.36125 55.165875 \n\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n    </g>\n    <g id=\"text_17\">\n     <!-- IWO: 1144.17 -->\n     <g transform=\"translate(314.96125 59.365875) scale(0.12 -0.12)\">\n      <defs>\n       <path id=\"TimesNewRomanPSMT-49\" d=\"M 1975 116 \nL 1975 0 \nL 159 0 \nL 159 116 \nL 309 116 \nQ 572 116 691 269 \nQ 766 369 766 750 \nL 766 3488 \nQ 766 3809 725 3913 \nQ 694 3991 597 4047 \nQ 459 4122 309 4122 \nL 159 4122 \nL 159 4238 \nL 1975 4238 \nL 1975 4122 \nL 1822 4122 \nQ 1563 4122 1444 3969 \nQ 1366 3869 1366 3488 \nL 1366 750 \nQ 1366 428 1406 325 \nQ 1438 247 1538 191 \nQ 1672 116 1822 116 \nL 1975 116 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-57\" d=\"M 5991 4238 \nL 5991 4122 \nQ 5825 4122 5722 4062 \nQ 5619 4003 5525 3841 \nQ 5463 3731 5328 3319 \nL 4147 -97 \nL 4022 -97 \nL 3056 2613 \nL 2097 -97 \nL 1984 -97 \nL 725 3422 \nQ 584 3816 547 3888 \nQ 484 4006 376 4064 \nQ 269 4122 84 4122 \nL 84 4238 \nL 1653 4238 \nL 1653 4122 \nL 1578 4122 \nQ 1413 4122 1325 4047 \nQ 1238 3972 1238 3866 \nQ 1238 3756 1375 3363 \nL 2209 984 \nL 2913 3006 \nL 2788 3363 \nL 2688 3647 \nQ 2622 3803 2541 3922 \nQ 2500 3981 2441 4022 \nQ 2363 4078 2284 4103 \nQ 2225 4122 2097 4122 \nL 2097 4238 \nL 3747 4238 \nL 3747 4122 \nL 3634 4122 \nQ 3459 4122 3378 4047 \nQ 3297 3972 3297 3844 \nQ 3297 3684 3438 3288 \nL 4250 984 \nL 5056 3319 \nQ 5194 3706 5194 3856 \nQ 5194 3928 5148 3990 \nQ 5103 4053 5034 4078 \nQ 4916 4122 4725 4122 \nL 4725 4238 \nL 5991 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       <path id=\"TimesNewRomanPSMT-4f\" d=\"M 2341 4334 \nQ 3166 4334 3770 3707 \nQ 4375 3081 4375 2144 \nQ 4375 1178 3765 540 \nQ 3156 -97 2291 -97 \nQ 1416 -97 820 525 \nQ 225 1147 225 2134 \nQ 225 3144 913 3781 \nQ 1509 4334 2341 4334 \nz\nM 2281 4106 \nQ 1713 4106 1369 3684 \nQ 941 3159 941 2147 \nQ 941 1109 1384 550 \nQ 1725 125 2284 125 \nQ 2881 125 3270 590 \nQ 3659 1056 3659 2059 \nQ 3659 3147 3231 3681 \nQ 2888 4106 2281 4106 \nz\n\" transform=\"scale(0.015625)\"/>\n      </defs>\n      <use xlink:href=\"#TimesNewRomanPSMT-49\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-57\" x=\"33.300781\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-4f\" x=\"127.685547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-3a\" x=\"199.902344\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-20\" x=\"227.685547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"252.685547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"298.935547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"348.935547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"398.935547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-2e\" x=\"448.935547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-31\" x=\"473.935547\"/>\n      <use xlink:href=\"#TimesNewRomanPSMT-37\" x=\"523.935547\"/>\n     </g>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"pc52f68119b\">\n   <rect x=\"38.2\" y=\"23.199\" width=\"357.12\" height=\"266.112\"/>\n  </clipPath>\n </defs>\n</svg>\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from ABC import ABC\n",
    "from IWO import IWO\n",
    "\n",
    "abc = ABC(data=data)\n",
    "abc.optimize(iteration=1000)\n",
    "iwo = IWO(data=data)\n",
    "iwo.optimize(iteration=1000)\n",
    "\n",
    "visualize([abc, iwo])"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "ACO on eil101_m10 trial 1: 100%|██████████| 100/100 [00:04<00:00, 24.09it/s, best: 1331.08]\n",
      "ACO on eil101_m10 trial 1: 100%|██████████| 100/100 [00:04<00:00, 22.89it/s, best: 1331.08]\n"
     ]
    },
    {
     "ename": "IndexError",
     "evalue": "list index out of range",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mIndexError\u001B[0m                                Traceback (most recent call last)",
      "Cell \u001B[1;32mIn [7], line 9\u001B[0m\n\u001B[0;32m      6\u001B[0m aco_no_diffusion \u001B[38;5;241m=\u001B[39m ACO(data\u001B[38;5;241m=\u001B[39mdata)\n\u001B[0;32m      7\u001B[0m aco_diffusion\u001B[38;5;241m.\u001B[39moptimize(iteration\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m100\u001B[39m, diffuse\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m)\n\u001B[1;32m----> 9\u001B[0m \u001B[43mvisualize\u001B[49m\u001B[43m(\u001B[49m\u001B[43m[\u001B[49m\u001B[43maco_diffusion\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maco_no_diffusion\u001B[49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n",
      "Cell \u001B[1;32mIn [3], line 6\u001B[0m, in \u001B[0;36mvisualize\u001B[1;34m(results)\u001B[0m\n\u001B[0;32m      4\u001B[0m plt\u001B[38;5;241m.\u001B[39mclf()\n\u001B[0;32m      5\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m result \u001B[38;5;129;01min\u001B[39;00m results:\n\u001B[1;32m----> 6\u001B[0m     plt\u001B[38;5;241m.\u001B[39mplot(\u001B[38;5;28mrange\u001B[39m(\u001B[38;5;28mlen\u001B[39m(result\u001B[38;5;241m.\u001B[39mevo_list)), result\u001B[38;5;241m.\u001B[39mevo_list, label\u001B[38;5;241m=\u001B[39m\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mresult\u001B[38;5;241m.\u001B[39mname\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[43mresult\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mevo_list\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;241;43m-\u001B[39;49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m]\u001B[49m\u001B[38;5;132;01m:\u001B[39;00m\u001B[38;5;124m.2f\u001B[39m\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m'\u001B[39m)\n\u001B[0;32m      7\u001B[0m plt\u001B[38;5;241m.\u001B[39mlegend()\n\u001B[0;32m      8\u001B[0m plt\u001B[38;5;241m.\u001B[39mtitle(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mresults[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;241m.\u001B[39mdata\u001B[38;5;241m.\u001B[39mname\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m: \u001B[39m\u001B[38;5;124m'\u001B[39m)\n",
      "\u001B[1;31mIndexError\u001B[0m: list index out of range"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"402.52pt\" height=\"298.411375pt\" viewBox=\"0 0 402.52 298.411375\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2023-03-11T23:03:29.978437</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.6.2, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 298.411375 \nL 402.52 298.411375 \nL 402.52 0 \nL 0 0 \nz\n\" style=\"fill: #ffffff\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 38.2 273.312 \nL 395.32 273.312 \nL 395.32 7.2 \nL 38.2 7.2 \nz\n\" style=\"fill: #ffffff\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path id=\"mdf0bff9daa\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"54.432727\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(51.432727 288.6445) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-30\" d=\"M 231 2094 \nQ 231 2819 450 3342 \nQ 669 3866 1031 4122 \nQ 1313 4325 1613 4325 \nQ 2100 4325 2488 3828 \nQ 2972 3213 2972 2159 \nQ 2972 1422 2759 906 \nQ 2547 391 2217 158 \nQ 1888 -75 1581 -75 \nQ 975 -75 572 641 \nQ 231 1244 231 2094 \nz\nM 844 2016 \nQ 844 1141 1059 588 \nQ 1238 122 1591 122 \nQ 1759 122 1940 273 \nQ 2122 425 2216 781 \nQ 2359 1319 2359 2297 \nQ 2359 3022 2209 3506 \nQ 2097 3866 1919 4016 \nQ 1791 4119 1609 4119 \nQ 1397 4119 1231 3928 \nQ 1006 3669 925 3112 \nQ 844 2556 844 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"95.218474\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 25 -->\n      <g transform=\"translate(89.218474 288.6445) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-32\" d=\"M 2934 816 \nL 2638 0 \nL 138 0 \nL 138 116 \nQ 1241 1122 1691 1759 \nQ 2141 2397 2141 2925 \nQ 2141 3328 1894 3587 \nQ 1647 3847 1303 3847 \nQ 991 3847 742 3664 \nQ 494 3481 375 3128 \nL 259 3128 \nQ 338 3706 661 4015 \nQ 984 4325 1469 4325 \nQ 1984 4325 2329 3994 \nQ 2675 3663 2675 3213 \nQ 2675 2891 2525 2569 \nQ 2294 2063 1775 1497 \nQ 997 647 803 472 \nL 1909 472 \nQ 2247 472 2383 497 \nQ 2519 522 2628 598 \nQ 2738 675 2819 816 \nL 2934 816 \nz\n\" transform=\"scale(0.015625)\"/>\n        <path id=\"TimesNewRomanPSMT-35\" d=\"M 2778 4238 \nL 2534 3706 \nL 1259 3706 \nL 981 3138 \nQ 1809 3016 2294 2522 \nQ 2709 2097 2709 1522 \nQ 2709 1188 2573 903 \nQ 2438 619 2231 419 \nQ 2025 219 1772 97 \nQ 1413 -75 1034 -75 \nQ 653 -75 479 54 \nQ 306 184 306 341 \nQ 306 428 378 495 \nQ 450 563 559 563 \nQ 641 563 702 538 \nQ 763 513 909 409 \nQ 1144 247 1384 247 \nQ 1750 247 2026 523 \nQ 2303 800 2303 1197 \nQ 2303 1581 2056 1914 \nQ 1809 2247 1375 2428 \nQ 1034 2569 447 2591 \nL 1259 4238 \nL 2778 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"136.004221\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 50 -->\n      <g transform=\"translate(130.004221 288.6445) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-35\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"176.789968\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 75 -->\n      <g transform=\"translate(170.789968 288.6445) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-37\" d=\"M 644 4238 \nL 2916 4238 \nL 2916 4119 \nL 1503 -88 \nL 1153 -88 \nL 2419 3728 \nL 1253 3728 \nQ 900 3728 750 3644 \nQ 488 3500 328 3200 \nL 238 3234 \nL 644 4238 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"217.575715\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 100 -->\n      <g transform=\"translate(208.575715 288.6445) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-31\" d=\"M 750 3822 \nL 1781 4325 \nL 1884 4325 \nL 1884 747 \nQ 1884 391 1914 303 \nQ 1944 216 2037 169 \nQ 2131 122 2419 116 \nL 2419 0 \nL 825 0 \nL 825 116 \nQ 1125 122 1212 167 \nQ 1300 213 1334 289 \nQ 1369 366 1369 747 \nL 1369 3034 \nQ 1369 3497 1338 3628 \nQ 1316 3728 1258 3775 \nQ 1200 3822 1119 3822 \nQ 1003 3822 797 3725 \nL 750 3822 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"258.361462\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 125 -->\n      <g transform=\"translate(249.361462 288.6445) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_7\">\n     <g id=\"line2d_7\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"299.147209\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 150 -->\n      <g transform=\"translate(290.147209 288.6445) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_8\">\n     <g id=\"line2d_8\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"339.932956\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 175 -->\n      <g transform=\"translate(330.932956 288.6445) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-37\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-35\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_9\">\n     <g id=\"line2d_9\">\n      <g>\n       <use xlink:href=\"#mdf0bff9daa\" x=\"380.718703\" y=\"273.312\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 200 -->\n      <g transform=\"translate(371.718703 288.6445) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-32\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_10\">\n      <defs>\n       <path id=\"m06fad93825\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </defs>\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"269.434062\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 1260 -->\n      <g transform=\"translate(7.2 273.600312) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-36\" d=\"M 2869 4325 \nL 2869 4209 \nQ 2456 4169 2195 4045 \nQ 1934 3922 1679 3669 \nQ 1425 3416 1258 3105 \nQ 1091 2794 978 2366 \nQ 1428 2675 1881 2675 \nQ 2316 2675 2634 2325 \nQ 2953 1975 2953 1425 \nQ 2953 894 2631 456 \nQ 2244 -75 1606 -75 \nQ 1172 -75 869 213 \nQ 275 772 275 1663 \nQ 275 2231 503 2743 \nQ 731 3256 1154 3653 \nQ 1578 4050 1965 4187 \nQ 2353 4325 2688 4325 \nL 2869 4325 \nz\nM 925 2138 \nQ 869 1716 869 1456 \nQ 869 1156 980 804 \nQ 1091 453 1309 247 \nQ 1469 100 1697 100 \nQ 1969 100 2183 356 \nQ 2397 613 2397 1088 \nQ 2397 1622 2184 2012 \nQ 1972 2403 1581 2403 \nQ 1463 2403 1327 2353 \nQ 1191 2303 925 2138 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-36\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_11\">\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"233.084507\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 1280 -->\n      <g transform=\"translate(7.2 237.250757) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-38\" d=\"M 1228 2134 \nQ 725 2547 579 2797 \nQ 434 3047 434 3316 \nQ 434 3728 753 4026 \nQ 1072 4325 1600 4325 \nQ 2113 4325 2425 4047 \nQ 2738 3769 2738 3413 \nQ 2738 3175 2569 2928 \nQ 2400 2681 1866 2347 \nQ 2416 1922 2594 1678 \nQ 2831 1359 2831 1006 \nQ 2831 559 2490 242 \nQ 2150 -75 1597 -75 \nQ 994 -75 656 303 \nQ 388 606 388 966 \nQ 388 1247 577 1523 \nQ 766 1800 1228 2134 \nz\nM 1719 2469 \nQ 2094 2806 2194 3001 \nQ 2294 3197 2294 3444 \nQ 2294 3772 2109 3958 \nQ 1925 4144 1606 4144 \nQ 1288 4144 1088 3959 \nQ 888 3775 888 3528 \nQ 888 3366 970 3203 \nQ 1053 3041 1206 2894 \nL 1719 2469 \nz\nM 1375 2016 \nQ 1116 1797 991 1539 \nQ 866 1281 866 981 \nQ 866 578 1086 336 \nQ 1306 94 1647 94 \nQ 1984 94 2187 284 \nQ 2391 475 2391 747 \nQ 2391 972 2272 1150 \nQ 2050 1481 1375 2016 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-38\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_12\">\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"196.734952\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1300 -->\n      <g transform=\"translate(7.2 200.901202) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-33\" d=\"M 325 3431 \nQ 506 3859 782 4092 \nQ 1059 4325 1472 4325 \nQ 1981 4325 2253 3994 \nQ 2459 3747 2459 3466 \nQ 2459 3003 1878 2509 \nQ 2269 2356 2469 2072 \nQ 2669 1788 2669 1403 \nQ 2669 853 2319 450 \nQ 1863 -75 997 -75 \nQ 569 -75 414 31 \nQ 259 138 259 259 \nQ 259 350 332 419 \nQ 406 488 509 488 \nQ 588 488 669 463 \nQ 722 447 909 348 \nQ 1097 250 1169 231 \nQ 1284 197 1416 197 \nQ 1734 197 1970 444 \nQ 2206 691 2206 1028 \nQ 2206 1275 2097 1509 \nQ 2016 1684 1919 1775 \nQ 1784 1900 1550 2001 \nQ 1316 2103 1072 2103 \nL 972 2103 \nL 972 2197 \nQ 1219 2228 1467 2375 \nQ 1716 2522 1828 2728 \nQ 1941 2934 1941 3181 \nQ 1941 3503 1739 3701 \nQ 1538 3900 1238 3900 \nQ 753 3900 428 3381 \nL 325 3431 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_13\">\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"160.385398\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 1320 -->\n      <g transform=\"translate(7.2 164.551648) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-32\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_14\">\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"124.035843\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 1340 -->\n      <g transform=\"translate(7.2 128.202093) scale(0.12 -0.12)\">\n       <defs>\n        <path id=\"TimesNewRomanPSMT-34\" d=\"M 2978 1563 \nL 2978 1119 \nL 2409 1119 \nL 2409 0 \nL 1894 0 \nL 1894 1119 \nL 100 1119 \nL 100 1519 \nL 2066 4325 \nL 2409 4325 \nL 2409 1563 \nL 2978 1563 \nz\nM 1894 1563 \nL 1894 3666 \nL 406 1563 \nL 1894 1563 \nz\n\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_15\">\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"87.686289\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_15\">\n      <!-- 1360 -->\n      <g transform=\"translate(7.2 91.852539) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-36\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_16\">\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"51.336734\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_16\">\n      <!-- 1380 -->\n      <g transform=\"translate(7.2 55.502984) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-33\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-38\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_8\">\n     <g id=\"line2d_17\">\n      <g>\n       <use xlink:href=\"#m06fad93825\" x=\"38.2\" y=\"14.987179\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n      </g>\n     </g>\n     <g id=\"text_17\">\n      <!-- 1400 -->\n      <g transform=\"translate(7.2 19.153429) scale(0.12 -0.12)\">\n       <use xlink:href=\"#TimesNewRomanPSMT-31\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-34\" x=\"50\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"100\"/>\n       <use xlink:href=\"#TimesNewRomanPSMT-30\" x=\"150\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_18\">\n    <path d=\"M 54.432727 140.256 \nL 379.087273 140.256 \nL 379.087273 140.256 \n\" clip-path=\"url(#p0979167add)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 38.2 273.312 \nL 38.2 7.2 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 395.32 273.312 \nL 395.32 7.2 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 38.2 273.312 \nL 395.32 273.312 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 38.2 7.2 \nL 395.32 7.2 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p0979167add\">\n   <rect x=\"38.2\" y=\"7.2\" width=\"357.12\" height=\"266.112\"/>\n  </clipPath>\n </defs>\n</svg>\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from ACO import ACO\n",
    "\n",
    "aco_diffusion = ACO(data=data)\n",
    "aco_diffusion.optimize(iteration=100, diffuse=True)\n",
    "\n",
    "aco_no_diffusion = ACO(data=data)\n",
    "aco_diffusion.optimize(iteration=100, diffuse=False)\n",
    "\n",
    "visualize([aco_diffusion, aco_no_diffusion])"
   ],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
